package it.antonio.ilpizze.assertion.concrete;

import it.antonio.ilpizze.assertion.Assertion;
import it.antonio.ilpizze.assertion.Condition;

public class BooleanAssertion extends Assertion<Boolean> {
        
        public BooleanAssertion(Boolean instance){
                super(instance);
        }
        
        @Override
        public BooleanAssertion as(String description) {
                description(description);
                return this;
        }

        @Override
        public BooleanAssertion doesNotSatisfy(Condition condition) {
                assertNotSatisfy(condition);
                return this;
        }

        @Override
        public BooleanAssertion isEqualTo(Boolean expected) {
                assertEqual(expected);
                return this;
        }

        @Override
        public BooleanAssertion isNotEqualTo(Boolean other) {
                assertNotEqual(other);
                return this;
        }

        @Override
        public BooleanAssertion isNotNull() {
                assertNotNull();
                return this;
        }

        @Override
        public BooleanAssertion isNotSameAs(Boolean other) {
                assertIsNotSameAs(other);
                return this;
        }

        @Override
        public BooleanAssertion isSameAs(Boolean expected) {
                assertIsSameAs(expected);
                return this;
        }

        @Override
        public BooleanAssertion satisfies(Condition condition) {
                assertSatisfy(condition);
                return this;
        }
        
        public void isTrue(){
        	isEqualTo(true);
        }
        
        public void isFalse(){
        	isEqualTo(false);
        }
}